package com.sinosoft.msf.base.supplier.pojo;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.sinosoft.msf.base.supplier.pojo.entity.SProjectCompany;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class CompanyInfoPojo {
    /**
     * 操作类型
     */
    @NotNull(message = "操作类型不能为空")
    private String optType;
    /**
     * 天眼查请求序号，用于保存时取值，避免前端显示的信息被篡改
     */
    @NotNull(message = "天眼查请求序号不能为空")
    private String reqId;
    private String comId;
    /**
     * 供应商编码，修改时必传
     */
    private String id;
    private String ipSame;
    /**
     * 供应商名称
     */
    private String name;
    /**
     * 法人名称
     */
    private String legalPerson;
    /**
     * 经营状态 存续：1  在业：2  吊销：3  注销：4  迁入：5  迁出：6  停业：7  解算：8  其他：9
     */
    private String operateStatus;
    /**
     * 统一社会信用代码
     */
    private String socialCreditCode;
    /**
     * 注册地址
     */
    private String registeredAddress;
    /**
     * 营业执照起止日期 - 开始日期
     */
    private String licenseStartDate;
    /**
     * 营业执照起止日期 - 结束日期
     */
    private String licenseEndDate;
    /**
     * 许可证起止日期 - 开始日期
     */
    private String permitStartDate;
    /**
     * 许可证起止日期 - 结束日期
     */
    private String permitEndDate;
    /**
     * 最终受益人
     */
    private String benefiter;
    /**
     * 最近一次查询天眼查时间
     */
    private String lastSearchTime;
    /**
     * 股权穿透图
     */
    private String shareholderChart;
    /**
     * 是否参与过我司项目
     */
    private String joinInFlag;
    /**
     * 参与次数
     */
    private String joinCount;
    /**
     * 参与金额
     */
    private String joinAmount;
    /**
     * 是否有行业排名
     */
    private String hasRanking;
    /**
     * 行业领域
     */
    private String industryField;
    /**
     * 排名位置
     */
    private String rankingPosition;
    /**
     * 供应商承接范围分类
     */
//    @NotNull(message = "供应商承接范围分类不能为空")
    private String supplierScopeCat;
    private String supplierScopeCatName;
    private List<ScopeItem> supplierScope;
    /**
     * 违法失信黑名单
     */
    private String blackList;
    /**
     * 经营异常名录
     */
    private String operateAbnormalList;
    /**
     * 行政处罚
     */
    private String adminPunish;
    /**
     * 提交类型
     */
    private String submitType;
    /**
     * 首次提交类型
     */
    private String firstSubmitType;
    /**
     * 首次提交时间
     */
    private String firstSubmitTime;
    /**
     * 联系人集合
     */
    private List<Contract> contracts;
    /**
     * 关联交易承若书
     */
    @NotNull(message = "关联交易承若书不能为空")
    private List<String> relatedTransFile;
    /**
     * 无违法承诺书
     */
    @NotNull(message = "无违法承诺书不能为空")
    private List<String> noIllegalFile;
    /**
     * 授权参标授权书
     */
    @NotNull(message = "授权参标授权书不能为空")
    private List<String> authJoinFile;
    /**
     * 当前状态 暂存：STG；待审核：WA；审核通过：PASS；审核不通过：NO；系统审核不通过：SNO；法务审核通过：LGPASS；法务审核不通过：LGNO；管理员审核不通过：ADNO；已撤回：WC
     */
    private String state;
    /**
     * 创建时间
     */
    private String createdDate;
    /**
     * 创建时间
     */
    private String updateDate;
    /**
     * 审核记录
     */
    private Object auditId;
    /**
     * 法务审核
     */
    private LegalAduit legalAduit;
    /**
     * 管理员审核
     */
    private AdminAduit adminAduit;
    /**
     * 是否选中供应商
     */
    private String sucBidder;
    /**
     * 修改后的对象
     */
    private CompanyInfoPojo companyInfoMod;
    private String adminPunishDetail;
    /**
     * 欠税数量
     */
    private String ownTax;
    private String ownTaxDetail;
    private String supplierScopeInput;
    private String permitDetail;
    private String permitInDate;
    private String authLetterEffectDate;
    /**
     * 附件集合
     */
    private List<FileVo> otherFiles;
    private String pricePath;
    private String modified;
    private SProjectCompany projectCompany;
    /**
     * 标记状态
     */
    private String markStatus;
    /**
     * 标记id
     */
    private String markId;
    /**
     * 标记信息详情
     */
    private CompanyMarkInfoPojo companyMark;

    @JsonIgnoreProperties(ignoreUnknown = true)
    @Data
    public static class LegalAduit {
        private String auditResult;
        private String auditRemark;
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    @Data
    public static class AdminAduit {
        private String auditResult;
        private String auditRemark;
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    @Data
    public static class FileVo {
        private String fileName;
        private String filePath;
    }
    /**
     * 公司经营范围
     */
    @JsonIgnoreProperties(ignoreUnknown = true)
    @Data
    public static class ScopeItem {
        //范围编码数组
        private List<String> code;
        //范围编码字符串
        private String strCode;
        //范围名称
        private String name;
        //其他类型
        private String other;
    }
}
